
\begin{figure*}[!bt]
\begin{center}
\begin{tabular}{|c|}
\hline


$\typerule{
}{
  \KGdash \hI \st \Gamma(\hI)
}$~\RULE{(S1)}\quad


$\typerule{
}{
  \KGdash \hT \st \hT
}$~\RULE{(S2)}\quad

$\typerule{
  \KGdash \code{S} \st \hT
   \gap
  \KGdash \hT \st \hU
}{
  \KGdash \code{S} \st \hU
}$~\RULE{(S3)}\quad
$\typerule{
  \code{class C<O,I> extends C}'\code{<O,I>}
}{
  \KGdash \hC\hgn{\code{MO},\code{IP}} \st \code{C}'\hgn{\code{MO},\code{IP}}
}$~\RULE{(S4)}

\\


$\typerule{
}{
  \KGdash \Mutable \st \Raw
}$~\RULE{(S5)}\quad
$\typerule{
}{
  \KGdash \Raw \st \ReadOnly
}$~\RULE{(S6)}\quad
$\typerule{
}{
  \KGdash \Immut \st \ReadOnly
}$~\RULE{(S7)}
 \\

$\typerule{
    \KGdash \code{IP} \st \code{IP}'
}{
  \KGdash \hC\hgn{\code{MO},\code{IP}} \st \hC\hgn{\code{MO},\code{IP}'}
}$~\RULE{(S8)}\quad
$\typerule{
}{
  \KGdash \hC\hgn{\code{MO},\code{IP}} \st \hC\hgn{\code{?},\code{IP}}
}$~\RULE{(S9)}
\quad
$\typerule{
\hl \in K
}{
  \KGdash \Immut_\hl \st \Raw
}$~\RULE{(S10)}
\\
$\typerule{
\hl \not \in K
}{
  \KGdash \Immut_\hl \st \Immut
}$~\RULE{(S11)}
\quad
$\typerule{
\hl \not \in K
}{
  \KGdash \Immut \st \Immut_\hl
}$~\RULE{(S12)}
\quad
$\typerule{
\hl \OprecNotEqual \code{NO}
}{
  \KGdash \hC\hgn{\code{NO},\Immut} \st \hC\hgn{\code{NO},\Immut_\hl}
}$~\RULE{(S13)}
\\

\hline
\end{tabular}
\end{center}
\caption{FOIGJ Subtyping Rules ($\KGdash \hT \st \code{T'}$). Rule~\RULE{S13} shows the connection between cooker~\hl and owner~\code{NO}.}
\label{Figure:subtyping}
\end{figure*}
